Random access memories (RAMs) often utilize multiple memory dies in which each memory die has a separate semiconductor substrate on which a memory integrated circuit is fabricated. The memory dies are frequently arranged in an array of dies in which the total data storage capacity of the memory array is sum of the storage capacity of each individual memory die added together.
A memory die of the memory array may fail due to various causes. A flash memory may employ a feature often referred to as “die sparing” in which an extra memory die is provided to replace a primary memory die in the event that one of the primary memory dies fails. For example, the memory array may have ten primary memory dies in which the system stores data into and reads data from in connection with regular data input/output operations. An extra memory die may be included in the array as a spare or secondary memory die but is typically not actively used until it is used to replace a failed primary memory die of array. Accordingly, data input/output operations typically access the ten primary memory dies for data storage operations but typically do not access the spare memory die until the spare die replaces a primary memory die.
Upon detection of the failure of a primary memory die, the data which was previously stored in the failed primary memory die is subsequently stored in the spare memory die so that the spare memory die may be used as a primary memory die in the place of the failed primary memory die. Because the data stored in the failed primary memory die may not be retrievable, data recovery techniques may be employed to reconstruct the missing data of the failed primary memory die and store the reconstructed data in the spare memory die to be used as the replacement memory die for the failed memory die.
There are various known error correction code (ECC) techniques for detecting and correcting data errors including for example, block codes such as Reed-Solomon error correction codes, for example, which process data on a block-by-block basis, and convolutional codes, for example, which process data on a bit-by-bit basis. In some applications such as deep space transmission of data between Earth and space probes, and compact disk recording and playback devices, for example, it is known to encode data twice using two different ECC schemes which are concatenated together as an outer ECC scheme and an inner ECC scheme, to operate in sequence on the data. By concatenating the ECC techniques, error detection and correction can be enhanced in some applications, as compared to employing just one of the ECC techniques alone.